草庐IT

C++ CUDA 指向成员的指针

全部标签

c++ - 如何使用 "auto"获取顶级 const 指针?

简而言之:根据C++Primer,第69页,“自动”:“如果我们希望推导类型具有顶级const,我们必须明确说明”。我会得到一个顶级常量指针:inti=42;constauto*p=&i;但结果p的类型为constint*而不是预期的int*const。我什至可以重新分配它p=0;。为什么?(注:使用auto*的指针类型推导格式来自书本。) 最佳答案 在您的示例中,p是指向constint的指针,而不是指向int的const指针>。后者可以通过以下语句实现:auto*constp=&i;

c++ - '+' 无法添加两个指针错误

我可以执行以下代码所示的操作:std::stringa="chicken";std::stringb="nuggets";std::stringc=a+b;然而,这失败了:std::stringc="chicken"+"nuggets";它给我一个错误提示“‘+’不能添加两个指针”。为什么?有没有其他方法可以在不出错的情况下执行此操作? 最佳答案 "chicken"和"nuggets"是文字C字符串而不是std::string。您可以直接连接:std::stringc="chicken""nuggets";从C++14开始,您可以添

c++ - 关于sizeof和类成员函数的一个问题

classB{public:inta;voidfn();}如果我创建B的对象,使用B*pb=newB;fn()的内存在哪里?对象中是否有指针指向fn()的内存位置?如果是,为什么sizeof(B)返回值就好像对象中根本没有指针一样? 最佳答案 Whereisthememoryoffn()locate?因为它是一个普通的函数,所以在你程序的代码部分的某个地方。此位置对于该类的所有实例都是相同的。事实上,它与通过pb实例化B无关。Isthereapointerinobjectthatpointingatthememoryloaction

c++ - 弄清楚晦涩的指针typedef

typedefsolution_type(*algorithm_ptr_type)(problem_typeproblem,void(*post_evaluation_callback)(void*move,intscore)/*=NULL*/);请帮帮我!谢谢 最佳答案 这意味着,algorithm_ptr_type是一个指向返回solution_type的函数的指针,其参数为:问题problem_typepost_evaluation_callback这又是一个函数指针,它接受两个参数(void*和int),并返回void.同样

C++:在常量指针指向的对象中调用非常量函数(错误 C2662)

我有一个带有指向对象的const指针的结构。它是const以便pointer不会改变,我不希望对象保持不变。我想在该对象中调用一个非常量函数,因此收到以下错误:errorC2662:'my_namespace::MyClass::myFunc':cannotconvert'this'pointerfrom'constmy_namespace::MyClass'to'my_namespace::MyClass&'ConversionlosesqualifiersstructMyStruct{MyStruct(constMyClass*init_my_class_ptr);constMyC

c++ - C++ 中的指针、多态性和段错误

我有一个有很多child的父类。Parent类中的每个函数都是纯函数,即没有函数的父实现,但子函数有自己的实现。无需在此处发布代码-标准内容。我不希望人们从任何地方创建父类的直接实例化。我已经通过让虚函数是纯的来防止这种情况发生,所以这很好。我的问题:根据用户的输入(字符串),我想实例化一个子项。我只知道运行时是哪一个。我的(不正确的?)想法如下,在我将代码放入函数并返回父函数之前,它编译得很好并且工作正常。所以这是可行的:Parent*parent;if(user_input=="A"){Child1child1;parent=&child1;}elseif(user_input==

c++ - 寻找指针的来源

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。如果你有一个object1和一个指向object2的指针,而我们当前在Object2中,那么我们可以从object2到达object1吗?如何?(OBJECT1)-------->(OBJECT2)wearehereandwedon'tknowwhere/whatOBJECT1is

c++ - 在 C++ 中自初始化为 nullptr 的普通原始指针

我喜欢C++11中的新指针类型,但有时我仍然需要原始指针。然而,让我对C++中的“原始”类型越来越难过的是,它们习惯于在未给出显式值时初始化为未定义。随着我更频繁地使用std::shared_ptr等,将原始指针初始化为null的需要感觉越来越脆弱和不必要。我在说:classfoo{...std::shared_ptrpb;//Initiallynullinwhateverconstructor.std::unique_ptrpd;//Likewise.std::weak_ptrpg;//Andagain.lar*pr;//Uh-oh!Whoknowswhatthisis?Better

C++ 指向 vector 的指针

我必须将元素插入到指向vector的指针中。我已经编写了以下代码,但它给出了段错误。有人可以指出此代码中的错误是什么,或者我们如何替代地执行此操作。intmain(){vector*te;te->push_back(10);coutsize() 最佳答案 你永远不会分配vector:vector*te=newvector;此外,您不需要动态分配。更简洁的方法是使用自动存储:intmain(){vectorte;te.push_back(10);cout 关于C++指向vector的指针,

c++ - 为什么删除指向指针 vector 的指针会导致指针无效?

编辑:感谢您的回答!我用std::string返回类型声明了tellSomething方法,而它应该是void!我把自己绊倒了,责怪可怜的无辜的delete运算符(operator):)!让我们考虑一个指向动态分配的vector的指针,它包含指向动态分配的对象的指针://Createthevectorofpointersstd::vector*v=newstd::vector;//CreatetwoobjectsA*a1=newA;A*a2=newA;//Populatethevectorv->push_back(a1);v->push_back(a2);//Deletethevect